<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <div id="root"></div>

    <script src="https://unpkg.zhimg.com/react@17.0.2/umd/react.development.js"></script>
    <script src="https://unpkg.zhimg.com/react-dom@17.0.2/umd/react-dom.development.js"></script>
    <script src="https://unpkg.zhimg.com/@babel/standalone/babel.min.js"></script>
    <script type="text/babel">
        class Login extends React.Component {

            state = {
                username: '',
                password: ''
            }
           
            handleSubmit = (event) => {
                event.preventDefault()
            }

            //#region
            /*
              高阶函数，
                1. 若A函数，接收的参数十一个函数
                或
                2. 若A函数，调用的返回值依然是一个函数

              函数柯里化：通过函数调用继续返回函数的方式，实现多次接收参数最后统一处理的函数编程形式
            */
            //#enregion
            formDataChange = typeName => {
                return (event) => {
                    console.log(typeName, ': ', event.target.value)
                    this.setState({
                        [typeName]: event.target.value
                    })
                }
            }

            render() {
                return (
                    <form onSubmit={this.handleSubmit}>
                        <div>
                            <label>用户名：</label>
                            <input type="text" name="username" onChange={this.formDataChange('username')} />
                        </div>
                        <div>
                            <label>密　码：</label>
                            <input type="password" name="password" onChange={this.formDataChange('password')} />
                        </div>
                        <div>
                            <button>登录</button>
                        </div>
                    </form>
                )
            }
        }

        ReactDOM.render(<Login />, document.getElementById('root'))
    </script>
</body>
</html>